package cn.edu.xhu.library_management.department.mapper;

import cn.edu.xhu.library_management.department.entity.LmFaculty;
import cn.edu.xhu.library_management.department.entity.search.SearchFaculty;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: MMJ
 * @Date: 2022-01-28
 * @Description: 院系相关操作mapper
 */
public interface FacultyMapper {
    /**
     * 添加院系，一条记录添加
     * @param faculty 院系实体对象
     * @return 返回值大于0即添加成功
     */
    public int addFaculty(LmFaculty faculty);

    /**
     * 添加院系，多条记录一起添加
     * @param faculties 院系实体对象集合
     * @return 返回值大于0即添加成功
     */
    public int addFaculties(List<LmFaculty> faculties);

    /**
     * 修改院系(通过ID修改)
     * @param faculty 要修改的院系实体对象(必须含有院系的ID)
     * @return 返回值大于0即修改成功
     */
    public int updateFaculty(LmFaculty faculty);


    /**
     * 通过院系ID，删除院系
     * @param faId 院系ID
     * @return 返回值大于0即删除成功
     */
    public int deleteFacultyById(Integer faId);

    /**
     * 通过院系IDs，删除院系
     * @param faIds 院系IDs
     * @return 返回值大于0即删除成功
     */
    public int deleteFacultiesByIds(@Param("faIds") List<Integer> faIds);

    /**
     * 查询所有院系记录
     * @return 院系对象集合
     */
    public List<LmFaculty> findAllFaculties();

    /**
     * 通过院系ID，查询院系
     * @param faId 院系ID
     * @return 返回单个院系对象
     */
    public LmFaculty findFacultyById(Integer faId);

    /**
     * 通过院系名称，查询院系
     * @param name 院系名称
     * @return 院系对象
     */
    public LmFaculty findFacultyByName(@Param("name") String name);


    /**
     * 搜索院系带分页
     * @param searchFaculty 院系搜索对象
     * @return
     */
    public List<LmFaculty> search(SearchFaculty searchFaculty);


    /**
     * 搜索的总条目
     * @param searchFaculty 搜索对象
     * @return 总条目数
     */
    public Integer searchTotal(SearchFaculty searchFaculty);

}
